# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
from math import *

#%% DONNEES

lambda_Na=5.011e-3 #conductivité molaire ionique limite de Na+ à 298 K [en S.m^2/mol]

lambda_OH=19.8e-3 #conductivité molaire ionique limite de HO- à 298 K [en S.m^2/mol]

lambda_H3O=34.98e-3 #conductivité molaire ionique limite de H3O+ à 298 K [en S.m^2/mol]

lambda_NO3=7.144e-3 #conductivité molaire ionique limite de NO3- à 298 K [en S.m^2/mol]

c=0.1 #concentration en acide nitrique [en mol/L]

c1=0.1 #concentration en soude [en mol/L]

V0=10e-3 #volume initial d'acide nitrique à titrer [L]

n=100 #nombre de valeurs dans le tableau

#%% FONCTION

def avant_eq(V):
        #conductivité corrigée avant l'équivalence
        return (lambda_Na-lambda_H3O)*c1*V/V0+(lambda_H3O+lambda_NO3)*c

def apres_eq(V):
        #conductivité corrigée après l'équivalence
        return (lambda_Na+lambda_OH)*c1*V/V0+(lambda_NO3-lambda_OH)*c

V_avant = np.linspace(0,c*V0/c1,n) #début, fin, nombre de points
V_apres = np.linspace(c*V0/c1,25e-3,n) #début, fin, nombre de points

sigma_corr = np.concatenate((avant_eq(V_avant),apres_eq(V_apres)))
V = np.concatenate((V_avant*1e3,V_apres*1e3))

#%% GRAPHE

plt.grid()
plt.xlim(0,25)
plt.title("Courbe de titrage conductimétrique")
plt.xlabel("Volume de soude versée $V$ [mL]")
plt.ylabel("Conductivité corrigée de la solution $\sigma'$ [S/m]")

plt.plot(V,sigma_corr)

plt.show()

#%% OPTIONNEL

#ax.legend(loc=2 ,prop={'size':20}) #Legende
